package com.enjoyor.soa.traffic.api.service.dubbo.tsms;

import java.util.List;
import java.util.Map;

import com.enjoyor.soa.traffic.api.dto.tsms.SchemeInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

public interface IDubboSchemeInfoService {
	
	@SuppressWarnings("rawtypes")
	
	/***
	 * 获取方案分页信息；
	 * @param page 分页信息page；
	 * @param schemeId 方案编号；
	 * @param schemeName 方案名称；
	 * @param schemeBeginDate 开始时间；
	 * @param schemeEndDate 结束时间；
	 * @param schemeRankId 方案等级编号；
	 * @param schemeStatusId 方案状态编号；
	 * @return zyh
	 */
	public ResultPojo getSchemeInfoPage(Page page, String schemeId, String schemeName, String schemeBeginDate,
			String schemeEndDate, String schemeRankId, String schemeStatusId);

	/***
	 * 获取方案List信息；
	 * @param schemeId 方案编号；
	 * @param schemeName 方案名称；
	 * @param schemeBeginDate 方案开始时间；
	 * @param schemeEndDate 方案结束时间；
	 * @param schemeRankId 方案等级编号；
	 * @param schemeStatusId 方案状态编号；
	 * @param isFull 是否查询完整数据
	 * @return zyh
	 */
	public ResultPojo getSchemeInfoList(String schemeId, String schemeName, String schemeBeginDate,
			String schemeEndDate, String schemeRankId, String schemeStatusId, Boolean isFull);

	/***
	 * 添加方案信息；
	 * @param shcemeInfoDto 方案对象；
	 * @param personName 操作人
	 * @return zyh
	 */
	public ResultPojo insertSchemeInfo(SchemeInfoDto shcemeInfoDto,String personName);
	
	/***
	 * 更新方案信息；
	 * @param shcemeInfoDto 方案对象；
	 * @param personName 操作人名称；
	 * @return zyh；
	 */
	public ResultPojo updeteSchemeInfo(SchemeInfoDto shcemeInfoDto,String personName);
	
	/***
	 * 删除方案信息；
	 * @param schemeId 方案编号；
	 * @param personName 操作人；
	 * @return zyh
	 */
	public ResultPojo deleteSchemeInfo(String schemeId,String personName);
	
	/***
	 * 提交方案信息；
	 * @param schemeId 方案编号；
	 * @param personName 操作人；
	 * @return zyh
	 */
	public ResultPojo submitSchemeInfo(String schemeId,String personName);
	
	/***
	 * 方案审核；
	 * @param schemeId 方案编号；
	 * @param schemeStatusId 方案状态编号；
	 * @param checkIdea 审核说明；
	 * @param personName 操作人；
	 * @return zyh
	 */
	public ResultPojo auditSchemeInfo(String schemeId,String schemeStatusId, String checkIdea,String personName);
	
	/***
	 * 查询待执行方案信息；
	 * @param schemeBeginDate 开始日期；
	 * @param schemeEndDate 结束日期；
	 * @return zyh
	 */
	public ResultPojo getSchemeForWeek(String schemeId, String schemeBeginDate, String schemeEndDate, String executeStatusId, 
			String driverPoliceId, String beforeLicensePlate);
	
	/***
	 * 修改方案待执行状态；
	 * @param executeTaskId 执行任务编号；
	 * @param isWaitExecute 待执行状态；
	 */
	public ResultPojo editSchemeWaitStatus(String executeTaskId, String isWaitExecute, String personName);
	
	/***
	 * （预演） 查询规定时间范围的方案信息；
	 * @param schemeBeginDate 开始日期；
	 * @param schemeEndDate 结束日期；
	 * @return zyh
	 */
	public ResultPojo getPreviewSchemeList(String schemeBeginDate, String schemeEndDate);
	
	/**
	 * 实际执行开始时间查询
	 * @param taskId 任务编号
	 * @param schemeId 方案编号
	 * @param executeTaskId 执行任务编号
	 * @param executeDate 执行日期
	 * @return
	 */
	public ResultPojo getExecuteStatusCollect(String taskId, String schemeId, String executeTaskId, 
			String executeDate);
	
	/**
	 * 执行任务数量统计 
	 * @param taskId 任务编号
	 * @param schemeId 方案编号
	 * @param executeTaskId 执行任务编号
	 * @param executeDate 执行日期
	 * @return
	 */
	public ResultPojo getRealExecuteTime(String taskId, String schemeId, String executeTaskId, 
			String executeDate);
}
